package py.una.pol.ii.is2.domain.flota;

import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

/**
 * Clase que mapea la entidad detalle_plantilla_mantenimiento
 * @author mbenitez
 * @date 30/04/2009
 */
@Entity
@Table(name = "detalle_plantilla_mantenimiento")
@NamedQueries({@NamedQuery(name = "DetallePlantillaMantenimiento.findAll", query = "SELECT d FROM DetallePlantillaMantenimiento d"), @NamedQuery(name = "DetallePlantillaMantenimiento.findByDepmCod", query = "SELECT d FROM DetallePlantillaMantenimiento d WHERE d.depmCod = :depmCod")})
public class DetallePlantillaMantenimiento implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="depm_generator")
    @SequenceGenerator(name="depm_generator", sequenceName="detalle_plantilla_mantenimiento_depm_cod_seq", allocationSize=1)
    @Basic(optional = false)
    @Column(name = "depm_cod")
    private Integer depmCod;
    @Basic(optional = false)
    @Column(name = "depm_cantidad")
    private Integer depmCantidad;
    @JoinColumn(name = "depm_cod_insumo", referencedColumnName = "insu_cod")
    @ManyToOne(optional = false)
    private Insumo depmCodInsumo;
    @JoinColumn(name = "depm_cod_plantilla", referencedColumnName = "plma_cod")
    @ManyToOne(optional = false, fetch=FetchType.EAGER)
    private PlantillaMantenimiento depmCodPlantilla;

    /**
     * Consructor por defecto
     */
    public DetallePlantillaMantenimiento() {
    }

    /**
     * Construye un objeto DetallePlantillaMantenimiento a partir del parámetro que recibe
     * @param depmCod Código del objeto
     */
    public DetallePlantillaMantenimiento(Integer depmCod) {
        this.depmCod = depmCod;
    }

    /**
     * Permite recuperar el código del detalle de plantilla de mantenimiento
     * @return código
     */
    public Integer getDepmCod() {
        return depmCod;
    }

    /**
     * Permite asignar código al detalle de plantilla de mantenimiento
     * @param depmCod Código a asignar
     */
    public void setDepmCod(Integer depmCod) {
        this.depmCod = depmCod;
    }

    /**
     * Permite recuperar la cantidad del detalle de plantilla de mantenimiento
     * @return cantidad
     */
    public Integer getDepmCantidad() {
        return depmCantidad;
    }

    /**
     * Permite asignar cantidad al detalle de plantilla de mantenimiento
     * @param depmCantidad Cantidad a asignar
     */
    public void setDepmCantidad(Integer depmCantidad) {
        this.depmCantidad = depmCantidad;
    }

    /**
     * Permite recuperar el código del insumo del detalle de plantilla de mantenimiento
     * @return Código del insumo
     */
    public Insumo getDepmCodInsumo() {
        return depmCodInsumo;
    }

    /**
     * Permite asignar código al insumo del detalle de plantilla de mantenimiento
     * @param depmCodInsumo Código de insumo
     */
    public void setDepmCodInsumo(Insumo depmCodInsumo) {
        this.depmCodInsumo = depmCodInsumo;
    }

    /**
     * Permite recuperar el código del detalle de plantilla de mantenimiento
     * @return
     */
    public PlantillaMantenimiento getDepmCodPlantilla() {
        return depmCodPlantilla;
    }

    /**
     * Permite asignar código al detalle de plantilla de mantenimiento
     * @param depmCodPlantilla
     */
    public void setDepmCodPlantilla(PlantillaMantenimiento depmCodPlantilla) {
        this.depmCodPlantilla = depmCodPlantilla;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (depmCod != null ? depmCod.hashCode() : 0);
        return hash;
    }

    /**
     * Compara si el elemento recibido como parámetro es igual al elemento actual
     * @param object segundo elemento de comparación
     * @return true si los elementos son iguales, en otro caso false
     */
    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof DetallePlantillaMantenimiento)) {
            return false;
        }
        DetallePlantillaMantenimiento other = (DetallePlantillaMantenimiento) object;
        if ((this.depmCod == null && other.depmCod != null) || (this.depmCod != null && !this.depmCod.equals(other.depmCod))) {
            return false;
        }
        return true;
    }

     /**
     * Permite mostrar en la salida estándar
     * @return String conteniendo el código de la tabla
     */
    @Override
    public String toString() {
        return "py.una.pol.ii.is2.dao.flota.DetallePlantillaMantenimiento[depmCod=" + depmCod + "]";
    }

}
